package com.fesine.spring.framework;

/**
 * @description: 类描述
 * @author: Fesine
 * @createTime:2016/12/4 19:53
 * @update:修改内容
 * @author: Fesine
 * @updateTime:2016/12/4 19:53
 */
public class StaticTest {
    /**
     * static修饰的变量或方法，不需要实例化对象即可引用
     * 被static修饰后的成员，在编译时由内存分配一块内存空间，
     * 直到程序停止运行才会释放，那么就是说该类的所有对象都会共享这块内存空间。
     * 也就是说，当值被修改后，那么所有的实例的值都发生改变
     * 全局变量
     */
    private static int i;
    /**
     * final + static 全局常量
     */
    final static int j=10;

    /**
     * 声明为static的方法有以下几条限制：
     · 它们仅能调用其他的static 方法。
     · 它们只能访问static数据。--->实例数据需要创建实例对象
     · 它们不能以任何方式引用this 或super。
     */
    static void go() {
        System.out.println(j);
    }

    public StaticTest() {
        i=4;
    }

    public StaticTest(int i) {
        this.i = i;
    }

    public static void main(String[] args) {

        StaticTest st1 = new StaticTest(5);
        StaticTest st2 = new StaticTest();
        System.out.println(st1.i);
        System.out.println(st2.i);
        System.out.println(st1.i);
    }
}
